# -*- coding: utf-8 -*-
'''
Created on 16-01-2012

@author: z0nk
'''
import urllib2
import cookielib
from BeautifulSoup import BeautifulSoup
from datetime import datetime, timedelta

data = { u"styczeń":1,
        u"luty":2,
        u"marzec":3,
        u"kwiecień":4,
        u"maj":5,
        u"czerwiec":6,
        u"lipiec":7,
        u"sierpień":8,
        u"wrzesień":9,
        u"październik":10,
        u"listopad":11,
        "grudzień":12 }

class Przedmiot(object):
    '''
    Klasa przechowujaca interesujace przedmioty
    '''
    
    jar = cookielib.CookieJar()
    cookie = urllib2.HTTPCookieProcessor(jar)
    opener = urllib2.build_opener(cookie)
    
    def __init__(self,url,maxCena=100):
        '''
        Constructor
        '''
        req = urllib2.Request(url)
        res = self.opener.open(req)
        self.opener.close()
        bs = BeautifulSoup(res)
        
        self.nazwa = str(bs.find("h1").text)
        self.aktCena = float(str(bs.find(name="strong", attrs={"class":"price"}).text)[:-3].replace(",","."))
        tmpdate =  str(bs.find(name="li", attrs={"class":"left smaller timeInfo"}).text)[15:-1]
        if maxCena % 10 == 0 :
            self.maxCena = maxCena * 1.02 + 0.82 #nie lubimy okrągłych cen! + 2% 
        else :
            self.maxCena = maxCena
        dzien=int(str(tmpdate.split(",")[0].split(" ")[0])[1:])
        miesiac=int(data[str(tmpdate.split(",")[0].split(" ")[1]).decode("utf-8")])
        rok = 2012
        godzina,minuta,sekunda = tmpdate.split(",")[1].split(":")
        godzina = int(str(godzina))
        minuta = int(str(minuta))
        sekunda = int(str(sekunda))
        self.koniec = datetime(rok,miesiac,dzien,godzina,minuta,sekunda)
        self.ostatniaLicytacja = 0
        self.url = url
        self.numer = int(str(bs.find("p", {"class":"itemId smaller"}).span.text))
        
    def licytuj(self,sesja,kwota):
        self.ostatniaLicytacja = kwota
        h = {"Referer": self.url}
        p = {"amount": kwota,
             "item_id": self.numer}
        sesja.openUrl(self.url,p,h)
    
    def strzal(self,sesja):
        self.licytuj(sesja,self.maxCena)
    
    def aktualizuj(self):
        req = urllib2.Request(self.url)
        res = self.opener.open(req)
        self.opener.close()
        bs = BeautifulSoup(res)
        self.aktCena = float(str(bs.find(name="strong", attrs={"class":"price"}).text)[:-3].replace(",","."))    
    
    def __str__(self):
        ret = { "nazwa": self.nazwa ,
               "aktualna cena": self.aktCena,
               "max cena": self.maxCena,
               "data zakonczenia": self.koniec.isoformat(sep=" ") }
        return str(ret)
    
    def mozliwoscLicytacji(self):
        return self.aktCena < self.maxCena
    
    def proponowanaKwota(self,granica=0.1):    
        if self.mozliwoscLicytacji() is False : 
            return 0
        elif self.aktCena > (self.maxCena - self.maxCena*granica) :
            return self.maxCena
        else :
            tmp = self.aktCena * 1.39  #złoty podział ! :) , ale chcemy sie jak najwolniej zblizyc do granicy
            if tmp > self.maxCena :
                tmp = (self.aktCena + self.maxCena)/2
        return tmp
